package com.wy;

import org.springframework.web.client.RestTemplate;
import org.json.JSONObject;

// 根据ip获取实际的经纬度  免费的，但是不准确
public class GeoLocationService {

    /**
     * 查询指定 IP 的地理位置
     *
     * @param ip 要查询的 IP 地址
     * @return 地理位置字符串
     */
    public static String getGeoLocation(String ip) {
        String url = "https://geolocation-db.com/json/" + ip;

        try {
            // 使用 RestTemplate 发起 HTTP 请求
            RestTemplate restTemplate = new RestTemplate();
            String response = restTemplate.getForObject(url, String.class);

            // 解析 JSON 响应
            JSONObject json = new JSONObject(response);
            System.out.println(json);
            String country = json.optString("country_name", "N/A");
            String state = json.optString("state", "N/A");
            String city = json.optString("city", "N/A");
            double latitude = json.optDouble("latitude", 0.0);
            double longitude = json.optDouble("longitude", 0.0);

            return String.format("Country: %s, State: %s, City: %s, Latitude: %.4f, Longitude: %.4f",
                    country, state, city, latitude, longitude);
        } catch (Exception e) {
            e.printStackTrace();
            return "Error: Unable to connect to geolocation-db API.";
        }
    }

    public static void main(String[] args) {
        // 示例 IP 地址
        String ip = "114.246.236.19";
        System.out.println(getGeoLocation(ip));
    }
}
